package com.beidu.lottery.call.dao;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.beidu.lottery.call.entity.ActivityLotteryPrize;
import com.beidu.lottery.call.entity.dto.ActivityLotteryDTO;
import com.beidu.lottery.call.entity.dto.ActivityLotteryPrizeListDTO;
import com.beidu.lottery.call.entity.query.AssociatedActivityPageQuery;
import com.beidu.lottery.call.entity.vo.ActivityLotteryPrizeVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 抽奖活动奖品关联表 Mapper 接口
 * </p>
 *
 * @author tennyson
 * @since 2023-11-09
 */
public interface ActivityLotteryPrizeMapper extends BaseMapper<ActivityLotteryPrize> {

    /**
     * 抽奖活动奖品关联表分页条件查询
     *
     * @param associatedActivityPageQuery 查询条件
     */
    List<ActivityLotteryPrizeListDTO> associatedActivityPage(AssociatedActivityPageQuery associatedActivityPageQuery);

    /**
     * 总库存数统计
     *
     * @param prizeId 奖品id
     * @return 统计值
     */
    Integer getTotalStock(Integer prizeId);

    /**
     * 根据活动id查询配置的奖品信息
     *
     * @param activityId 活动ID
     */
    List<ActivityLotteryPrizeVO> queryByActivityId(@Param("activityId") Integer activityId);

    /**
     * 获取奖品池（前端流程）
     *
     * @param id 活动ID
     * @return 奖品池
     * @author 北渡
     */
    List<ActivityLotteryDTO> getPortalPrizes(@Param("id") Integer id);

    /**
     * 增加已使用的库存量
     *
     * @param id       主键ID
     * @param quantity 增加的数量
     * @return 受影响行数
     * @author 北渡
     */
    int incrementUsedInventory(@Param("id") Integer id, @Param("quantity") int quantity);

}
